package com.campus.common.util;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class ConnectionPool {
    private static HikariDataSource dataSource;

    static {
        // 从配置文件读取数据库路径
        String dbPath = "D:/javacode/v3/project/common/src/main/resources/Database1.accdb";

        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:ucanaccess://" + dbPath);
        config.setUsername("");
        config.setPassword("");
        config.setMaximumPoolSize(20); // 最大连接数
        config.setMinimumIdle(5);     // 最小空闲连接数
        config.setIdleTimeout(600000); // 空闲连接最大存活时间（毫秒）
        config.setConnectionTimeout(1000); // 获取连接的超时时间（毫秒）
        config.setMaxLifetime(1800000); // 连接的最大生命周期（毫秒）

        dataSource = new HikariDataSource(config);
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    public static void closeConnection(Connection conn) {
        if (conn != null) {
            try {
                conn.close(); // HikariCP会将该连接返回连接池
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void shutdown() {
        if (dataSource != null) {
            dataSource.close();
        }
    }
}